

from Reg import *

import token_c



@RegLanguage(language="c", extension=['c'])
def c_language():
    return [
        "identifier_noname",
        "number_noname",
        "string_noname",
        "char_noname",
        "block_comment",
        "line_comment",

        "Keyword_auto",  
        "Keyword_double",      
        "Keyword_int",        
        "Keyword_struct",
        "Keyword_break",        
        "Keyword_else",        
        "Keyword_long",       
        "Keyword_switch",
        "Keyword_case",         
        "Keyword_enum",        
        "Keyword_register",   
        "Keyword_typedef",
        "Keyword_char",         
        "Keyword_extern",      
        "Keyword_return",     
        "Keyword_union",
        "Keyword_const",        
        "Keyword_float",       
        "Keyword_short",      
        "Keyword_unsigned",
        "Keyword_continue",     
        "Keyword_for",         
        "Keyword_signed",     
        "Keyword_void",
        "Keyword_default",      
        "Keyword_goto",        
        "Keyword_sizeof",     
        "Keyword_volatile",
        "Keyword_do",           
        "Keyword_if",          
        "Keyword_static",     
        "Keyword_while", 

        "Symbol_operator_left_shift_assign",
        "Symbol_operator_right_shift_assign",
        "Symbol_operator_arrow",
        "Symbol_operator_add_assign",
        "Symbol_operator_subtract_assign",
        "Symbol_operator_multiply_assign",
        "Symbol_operator_divide_assign",
        "Symbol_operator_modulus_assign",
        "Symbol_operator_bit_and_assign",
        "Symbol_operator_bit_exclusive_or_assign",
        "Symbol_operator_bit_inclusive_or_assign",
        "Symbol_operator_bit_left_shift",
        "Symbol_operator_bit_right_shift",
        "Symbol_operator_equal",
        "Symbol_operator_notequal",
        "Symbol_operator_ge",
        "Symbol_operator_le",
        "Symbol_operator_increment",
        "Symbol_operator_decrement",
        "Symbol_operator_and",
        "Symbol_operator_or",

        "Symbol_lparenthese",
        "Symbol_rparenthese",
        "Symbol_lbracket",
        "Symbol_rbracket",
        "Symbol_lbrace",
        "Symbol_rbrace",
        "Symbol_comma",
        "Symbol_dot",
        "Symbol_question",
        "Symbol_colon",
        "Symbol_semicolon",
        "Symbol_operator_assign",
        "Symbol_preprocess",

        "Symbol_operator_indirection",
        "Symbol_operator_addressof",
        "Symbol_operator_plus",
        "Symbol_operator_negation",
        "Symbol_operator_multiplication",
        "Symbol_operator_division",
        "Symbol_operator_modulus",
        "Symbol_operator_logical_negation",
        "Symbol_operator_greater",
        "Symbol_operator_less",
        "Symbol_operator_not",
        "Symbol_operator_bit_and",
        "Symbol_operator_bit_or",
        "Symbol_operator_bit_xor",
        "Symbol_operator_bit_complement",


        
    ]

@RegLanguage(language="cpp", extension=['cpp'])
def cpp_language():
    return [
        "identifier_noname",
        "number_noname",
        "string_noname",
        "char_noname",
        "block_comment",
        "line_comment",

        "Keyword_auto",  
        "Keyword_double",      
        "Keyword_int",        
        "Keyword_struct",
        "Keyword_break",        
        "Keyword_else",        
        "Keyword_long",       
        "Keyword_switch",
        "Keyword_case",         
        "Keyword_enum",        
        "Keyword_register",   
        "Keyword_typedef",
        "Keyword_char",         
        "Keyword_extern",      
        "Keyword_return",     
        "Keyword_union",
        "Keyword_const",        
        "Keyword_float",       
        "Keyword_short",      
        "Keyword_unsigned",
        "Keyword_continue",     
        "Keyword_for",         
        "Keyword_signed",     
        "Keyword_void",
        "Keyword_default",      
        "Keyword_goto",        
        "Keyword_sizeof",     
        "Keyword_volatile",
        "Keyword_do",           
        "Keyword_if",          
        "Keyword_static",     
        "Keyword_while", 
        "Keyword_asm",
        "Keyword_bool",
        "Keyword_catch",
        "Keyword_class",
        "Keyword_const_cast",
        "Keyword_delete",
        "Keyword_dynamic_cast",
        "Keyword_explicit",
        "Keyword_export",
        "Keyword_false",
        "Keyword_friend",
        "Keyword_inline", 
        "Keyword_mutable",
        "Keyword_namespace",
        "Keyword_new",
        "Keyword_operator", 
        "Keyword_private",
        "Keyword_protected",
        "Keyword_public",
        "Keyword_reinterpret_cast",
        "Keyword_static_cast",
        "Keyword_template",
        "Keyword_this",
        "Keyword_throw",
        "Keyword_true",
        "Keyword_try",
        "Keyword_typeid",
        "Keyword_typename", 
        "Keyword_using",
        "Keyword_virtual",
        "Keyword_wchar_t", 

        "Symbol_operator_left_shift_assign",
        "Symbol_operator_right_shift_assign",
        "Symbol_operator_arrow",
        "Symbol_operator_add_assign",
        "Symbol_operator_subtract_assign",
        "Symbol_operator_multiply_assign",
        "Symbol_operator_divide_assign",
        "Symbol_operator_modulus_assign",
        "Symbol_operator_bit_and_assign",
        "Symbol_operator_bit_exclusive_or_assign",
        "Symbol_operator_bit_inclusive_or_assign",
        "Symbol_operator_bit_left_shift",
        "Symbol_operator_bit_right_shift",
        "Symbol_operator_equal",
        "Symbol_operator_notequal",
        "Symbol_operator_ge",
        "Symbol_operator_le",
        "Symbol_operator_increment",
        "Symbol_operator_decrement",
        "Symbol_operator_and",
        "Symbol_operator_or",

        "Symbol_lparenthese",
        "Symbol_rparenthese",
        "Symbol_lbracket",
        "Symbol_rbracket",
        "Symbol_lbrace",
        "Symbol_rbrace",
        "Symbol_comma",
        "Symbol_dot",
        "Symbol_question",
        "Symbol_colon",
        "Symbol_semicolon",
        "Symbol_operator_assign",
        "Symbol_preprocess",

        "Symbol_operator_indirection",
        "Symbol_operator_addressof",
        "Symbol_operator_plus",
        "Symbol_operator_negation",
        "Symbol_operator_multiplication",
        "Symbol_operator_division",
        "Symbol_operator_modulus",
        "Symbol_operator_logical_negation",
        "Symbol_operator_greater",
        "Symbol_operator_less",
        "Symbol_operator_not",
        "Symbol_operator_bit_and",
        "Symbol_operator_bit_or",
        "Symbol_operator_bit_xor",
        "Symbol_operator_bit_complement",
        
    ]